import axios from 'axios'
import Vue from 'vue'
import { getToken, removeToken, removeUserId } from './localData'

// 设置服务器 请求基地址
axios.defaults.baseURL = 'http://127.0.0.1:3000'
// 在线服务器 - 新闻数据更多
// axios.defaults.baseURL = 'http://157.122.54.189:9083'
//把地址挂载到vue原型上
Vue.prototype.$baseUrl = axios.defaults.baseURL

// 添加请求拦截器 - axios 发送请求前自动执行的一个函数而已
//  interceptors 拦截器
//  request 请求
axios.interceptors.request.use(
    // config 就是请求时的配置
    (config) => {
        // 在发送请求之前做些什么
        // 获取本地存储的 token
        const token = getToken()
        // 如果有 token 就添加到请求头中
        if (token) {
            config.headers.Authorization = token
        }
        // console.log('axios请求发送前，调用了这个函数', config)
        // 返回修改后的配置
        return config
    },
    (error) => {
        // 对请求错误做些什么，表示失败把 error 传递给 catch()
        return Promise.reject(error)
    },
)

// 添加响应拦截器
axios.interceptors.response.use(
    (response) => {
        // console.log('服务器响应数据后，axios 会自动调用的函数', response)
        if (response.data.message === '用户信息验证失败') {
            // 失败的原因可能是未登录，或者登录过期了。
            // 1. 删除已过期的用户信息
            removeToken()
            removeUserId()
        }
        // 返回的数据
        return response
    },
    (error) => Promise.reject(error),
)

export default axios
